#include <iostream>

#define MAXN 64

using namespace std;

int n, matchlist[MAXN+1][MAXN+1];

void makelist(int a1, int b1, int a2, int b2, int x, int y) {
	if(x==y) matchlist[a1][b1] = x;
	else {
		int a3=(a1+a2)/2, b3=(b1+b2)/2, xy=(x+y)/2;
		makelist(a1, b1, a3, b3, x, xy);
		makelist(a1, b3+1, a3, b2, xy+1, y);
		makelist(a3+1, b1, a2, b3, xy+1, y);
		makelist(a3+1, b3+1, a2, b2, x, xy);
	}
}

void printlist(int n) {
	for(int i=1; i<=n; i++) {
		for(int j=1; j<n; j++) {
			printf("%4d ", matchlist[i][j]);
		}
		printf("%4d\n", matchlist[i][n]);
	}
}

int main() {
	scanf("%d", &n);
	makelist(1, 1, n, n, 1, n);
	printlist(n);
	return 0;
}
